package com.scau.RBAC.service;

import com.scau.RBAC.model.entity.User;

/**
 * 外部认证服务接口，作为适配器模式的目标接口
 */
public interface ExternalAuthService {
    /**
     * 外部系统用户认证
     * @param username 用户名
     * @param password 密码
     * @return 用户信息
     */
    User authenticate(String username, String password);

    /**
     * 校验令牌有效性
     * @param token 认证令牌
     * @return 用户信息
     */
    User validateToken(String token);

    /**
     * 刷新令牌
     * @param oldToken 旧令牌
     * @return 新令牌
     */
    String refreshToken(String oldToken);

    /**
     * 注销用户
     * @param userId 用户ID
     */
    void logout(Long userId);

    /**
     * 获取服务类型
     * @return 服务类型
     */
    String getServiceType();

    /**
     * 检查服务是否可用
     * @return 是否可用
     */
    boolean isAvailable();
}